#include "Que.h"

Que* Que_Create(uint32_t size) {
	Que* que = (Que*)malloc(sizeof(Que));
	if (que == NULL) return NULL;
	que->buf = (uint8_t*)malloc(size);
	if (que->buf == NULL) { free(que); return 0; }
	que->ptr = 0;
	que->size = size;
	return que;
}

uint8_t Que_MoveOn(Que* que, uint8_t next) {
	if (que->ptr < que->size) {
		que->buf[que->ptr++] = next;
		return 0;
	} else {
		uint8_t out = 0;
		for (que->ptr = 0; que->ptr < que->size-1; que->ptr++) {
			que->buf[que->ptr] = que->buf[que->ptr+1];
		}
		out = que->buf[que->ptr];
		que->buf[que->ptr++] = next;
		return out;
	}
}

void Que_Destroy(Que* que) {
	free(que->buf);
	free(que);
}
